/**
 * Copyright (C) 2018-2022
 * All rights reserved, Designed By www.yixiang.co
 * 注意：
 * 本软件为www.yixiang.co开发研制
 */
package co.yixiang.modules.goods.mapper;

import co.yixiang.common.mapper.CoreMapper;
import co.yixiang.modules.adopt.entity.domain.YxAdoptProduct;
import co.yixiang.modules.goods.entity.domain.YxStoreProduct;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author hupeng
 * @date 2020-05-12
 */
@Repository
@Mapper
public interface StoreProductMapper extends CoreMapper<YxStoreProduct> {


    @Update("update yx_store_product set is_del = #{status} where id = #{id}")
    void updateDel(@Param("status") int status, @Param("id") Integer id);

    @Update("update yx_store_product set is_show = #{status} where id = #{id}")
    void updateOnsale(@Param("status") int status, @Param("id") Integer id);

    @Update("update yx_store_product set position = ST_GeomFromText(#{position}) WHERE id = #{id}")
    void updatePosition(@Param("position") String position, @Param("id") String id);

    /**
     * 前端小程序查询
     * 不同维度进行排序
     * 如果自定义的方法还希望能够使用MP提供的Wrapper条件构造器，则需要如下写法
     * @param lng 经度
     * @param lat 纬度
     * @param adoptProductWrapper mybatis查询构造器
     * @return
     */
    @Select("SELECT *,ST_Distance_sphere(position, point(#{lng}, #{lat})) 'distance',`browse`+`sales` popularity FROM yx_store_product ${ew.customSqlSegment}")
    List<YxStoreProduct> selectByMyWrapper(@Param("lng") Double lng, @Param("lat") Double lat, @Param(Constants.WRAPPER) Wrapper<YxAdoptProduct> adoptProductWrapper);

}
